//
//  main.m
//  Day11
//
//  Created by dllo on 16/5/18.
//  Copyright © 2016年 lanou. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Function.h"

//typedef struct Student {
//    char name[20];
//    int score;
//}Student;

int main(int argc, const char * argv[]) {
   
#if 0
    
    // 函数的调用:
    // sayHello();
    //声明一个指向该函数的函数指针:
    void (*p) () = NULL; //p的类型是: void(*) ()
    p = sayHello; //函数名就是函数的首地址!
    // 通过函数指针调用函数:
    p();
    
#endif
    
#if 0
    //声明一个函数指针指向该函数
    int (*p1) (int a ,int b) = NULL;
    p1 = getMax;
    printf("%d",p1(1,2));
    
#endif
    
#if 0
   /* 
    定义两个函数，一个求两个数的 最大值，一个求两个数的 和，从控制台输入maxValue或sum分别求3和5的最大值或和（提示：定义一个 函数指针，根据输入内容指向不同函数，最后一次 调用完成）。
    */
    
    char consoleString[10];
    int (*q) (int ,int) = NULL;
    printf("请输入操作命令");
    scanf("%s", consoleString);
    int result = 0;
    if (strcmp(consoleString, "getMax") == 0) {
        // 函数指针指向getMax函数;
        q = getMax;
        result = q(3,5);
    } else if (strcmp(consoleString, "getSum") == 0) {
        q = getSum;
        result = q(3,5);
    } else {
        printf("您输入的命令有误!");
    }
    
    printf("%d",result);
#endif
    
#if 0
    /*
    写一函数查找成绩90分以上的学员,使用回调函数在姓名后加”高富帅”。
    提示：定义两个函数
    1、void addStr(char *name);
    2、void findStudentByScore(Student *stus, int count, void(*p)(char *))
    */
    Student stu1 = {"tony", 98};
    Student stu2 = {"steve", 89};
    Student stu3 = {"carln", 50};
    
    Student stuArray[] = {stu1, stu2, stu3};
    
    findStudentByScore(stuArray, 3, addStr);
    
    for (int i = 0;i < 3; i++) {
        printf("%s\n",stuArray[i].name);
    }
    
    
    
    
    
    
#endif
    
#if 1
    //动态排序
    Student stu1 = {"张三" , 20, 69.5};
    Student stu2 = {"李四" , 19, 99.5};
    Student stu3 = {"王五" , 23, 89.5};
    Student stu4 = {"赵六" , 21, 77.5};
    Student stuArray[] = {stu1, stu2, stu3, stu4};
    printStudents(stuArray, 4);
    
    
    //调用排序的函数
    bubbleSort(stuArray, 4, compareStudentByAge);
    
    
    printf("\n");
    printStudents(stuArray, 4);
#endif
    
    
    return 0;
}
